class Solution {
public:
    string reverseWords(string s) {
        //使用双指针
        //去除首尾的空格
        int newbegin = 0;
        for(int i = 0;i<s.size();i++)
        {
            if(s[i] != ' ')
            {
                newbegin = i;
                break;
            }
        }
        int newend = s.size()-1;
        for(int i = s.size()-1;i>=0;i--)
        {
            if(s[i]!=' ')
            {
                newend = i;
                break;
            }
        }
        vector<string> ret;
        int i = newend;int j = newend;
        while(i>=newbegin)
        {
            while(i>=newbegin&&s[i]!=' ')
            {
                i--;
            }//到这里说明找到了一个单词
            ret.push_back(s.substr(i+1,j-i));
            //需要让i跳过两个单词中间的' '
            while(i>=newbegin&&s[i] == ' ')
            {
                i--;
            }
            j = i;//让j指向这个单词的最后一个字母
        }
        string result;
        for(int i = 0;i<ret.size();i++)
        {
            result+=ret[i];
            if(i !=ret.size()-1)
                result+=" ";
        }
        return result;
    }
};
